package com.taotao.job.service;

import com.github.pagehelper.PageInfo;
import com.taotao.job.core.model.JobMeta;
import com.taotao.job.core.trigger.context.TriggerFeature;
import com.taotao.job.model.entity.JobRunInstance;
import com.taotao.job.model.entity.JobTriggerMeta;

import java.util.Set;

/**
 * <p>
 * 任务运行实例信息服务接口
 * </p>
 *
 * @author Fan Beibei
 * @version V1.0
 * @since 2021-03-14 21:43:18
 */
public interface JobRunInstanceService {


    /**
     * 根据主键软删除
     *
     * @param ids    主键
     * @param userId 操作人ID
     */
    void softDelByIds(Set<java.lang.Long> ids, Long userId);


    /**
     * 根据主键查询
     *
     * @param id 主键
     * @return
     */
    JobRunInstance queryById(java.lang.Long id);

    /**
     * 添加或更新记录
     *
     * @param jobRunInstance 记录
     * @param userId         操作人ID
     */
    void addOrUpdate(JobRunInstance jobRunInstance, Long userId);

    /**
     * 分页查询
     *
     * @param param    查询参数
     * @param pageNum  页号,从1开始
     * @param pageSize 页大小
     * @return
     */
    PageInfo<JobRunInstance> queryByPage(JobRunInstance param, int pageNum, int pageSize);


//------------以上是生成代码-----------------------------------------------------------------------------------------------------------------


    /**
     * 创建分片任务的主运行实例
     *
     * @param jobMeta
     * @param triggerFeature
     * @param triggerMeta
     * @return
     */
    Long createShardingMainRunInstance(JobMeta jobMeta, TriggerFeature triggerFeature, JobTriggerMeta triggerMeta);

    /**
     * 创建普通任务的运行实例
     *
     * @param jobMeta
     * @param triggerFeature
     * @param triggerMeta
     * @return
     */
    Long createRunInstance(JobMeta jobMeta, TriggerFeature triggerFeature, JobTriggerMeta triggerMeta);
}
